package main;

import entitaet.Bestellung;
import entitaet.Produkt;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class DAO {
    private EntityManagerFactory emf = Persistence.
            createEntityManagerFactory("AufgabeJPABestellverwaltungPU");
    private EntityManager em = emf.createEntityManager();
    
    public void produktAnlegen(String pname, double vk) {
        this.persist(new Produkt(pname, vk));
    }

    public void bestellungAnlegen(String kunde) {
       this.persist(new Bestellung(kunde));
    }

    public void produktInBestellungErgaenzen(int bst, int pn, int anz) {

    }

    public void produktAusBestellungLoeschen(int bstnr, int pnr) {

    }

    public void produkteAnzeigen() {

    }

    public void bestellungenAnzeigen() {

    }

    public void produktbestellungshaeufigkeiten() {

    }

    public void nieBestellteProdukte() {

    }

    public void bestellsummenBerechnen() {

    }

    void startdaten() {
        String[] produkte = {"Cola","Fanta","Sprite"};
        double[] preise = {1.99,1.89,1.55};
        for (int i=0; i<produkte.length; i++)
            this.produktAnlegen(produkte[i], preise[i]);
        
        /*String[] kunden = {"Hans Hatzuviel","Armin Armwienix","Rita Reich"};
        for (int i=0; i<kunden.length; i++)
            this.bestellungAnlegen(kunden[i]);*/
        
    }

    /* freiwillig
     * Ausfuehrung der Anfrage ql, fuer die eine "normale" Liste von
     * Objekten als Ergebnis erwartet wird. */
    public void anfragen(String ql) {

    }

    /* freiwillig
     * Detailliertere Analyse des Ergebnisses der Anfrage ql, falls
     * Object-Arrays in der Ergebnisliste stehen, werden Elemente der
     * Arrays einzeln ausgegeben. */
    public void anfragen2(String ql) {

    }
    
    private void persist(Object o) {
        em.getTransaction().begin();
        try {
            em.persist(o);
            em.getTransaction().commit();
        }
        catch (Exception e) {
            if (em.getTransaction().isActive())
                em.getTransaction().rollback();
        }
    }
}
